package cn.iocoder.yudao.module.product.service.recommend;


import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO;

import java.util.List;
import java.util.Map;

public interface RecommendService {
    /**
     * 获取推荐商品
     *
     * @return spu商品信息
     */
    PageResult<ProductSpuDO> getRecommend(PageParam pageParam);

    /**
     * 通过随机抽取获取推荐商品
     * @return spu商品信息
     */
    List<ProductSpuDO> getRecommendByRandom();

    /**
     * 个人spu数据第一步处理
     *
     * @param spuIds
     * @return
     */
    List<Long> preliminaryCleaning(List<Long> spuIds);

    /**
     * 获取相似用户ids
     *
     * @param spuIds
     * @return 返回相似用户ids
     */
    Map<Long, Double> getSimilarUserIds(List<Long> spuIds);

    List<Long> getNewProductIds(List<Long> spuIds);

    List<Long> combinationSimilarityAndNewProduct(List<Long> similarities, List<Long> newProductIds);
}
